package com.bbva.kyfb.kyfbbofc.converters;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.bbva.jee.arq.spring.core.gce.CodigoError;
import com.bbva.jee.arq.spring.core.gce.ExcepcionEjecucionAplicacion;
import com.bbva.kyfb.kyfbdto.firmas.errores.Errores_kyfb_servicios;
import com.bbva.kyfb.kyfbdto.firmas.sistemasHost.FicheroDto;


/**
 * The Class ResulSetDtoConverter.
 */
public final class ResulSetDtoConverter {
	
	/** The Constant VALIDATION_ERROR. */
	private static final CodigoError VALIDATION_ERROR = Errores_kyfb_servicios.ERROR_FORMATEO_RESPUESTA;
	
	/**
	 * Instantiates a new resul set dto converter.
	 */
	private ResulSetDtoConverter() {
		//Evitamos instanciar
	}
	
	/**
	 * Creates the fichero pdte dto from entity.
	 *
	 * @param entidades the entidades
	 * @return the list
	 */
	public static List<FicheroDto> createFicherosDtoFromEntity(final List<Object[]> entidades) {
		ArrayList<FicheroDto> fichConf = new ArrayList<FicheroDto>();
		for (Object o[] : entidades) {
			fichConf.add(createFicheroDtoFromEntity(o));
		}
		return fichConf;
	}	

	/**
	 * Creates the fichero pdte dto from entity.
	 *
	 * @param o the o
	 * @return the fichero pdte firma
	 */
	public static FicheroDto createFicheroDtoFromEntity(final Object[] o) {
		try {
			FicheroDto fichero = new FicheroDto();
			
				fichero.setTimestampFiche(((String) o[0]).trim());
				fichero.setNombreFichero(((String) o[1]).trim());
				fichero.setImporteFichero((BigDecimal) o[2]);
				fichero.setDivisaFichero(((String) o[3]).trim());
				fichero.setSituacionFiche(((String) o[4]).trim());
				fichero.setFechaProceso((Date) o[5]);
				fichero.setFechaServicio((Date) o[6]);
				fichero.setOrdenesFichero((Integer)o[7]);

//			try {
//				fichero.setdFechaProceso(new SimpleDateFormat("yyyyMMdd").parse(((String) o[10]).trim()));
//			} catch (ParseException e) {
//				//TODO Esto es correcto?
//			}

			return fichero;
		} catch (IndexOutOfBoundsException e) {
			throw new ExcepcionEjecucionAplicacion(VALIDATION_ERROR, e);
		} catch (ClassCastException e) {
			throw new ExcepcionEjecucionAplicacion(VALIDATION_ERROR, e);
		} catch (NullPointerException e) {
			throw new ExcepcionEjecucionAplicacion(VALIDATION_ERROR, e);
		}
	}	
	
}
